using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using PackTracker.Business;

namespace PackTracker.UserControls
{
	public partial class ItemPedidoEditar : UserControl
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				itemPedidoForm.DefaultMode = getItemPedido().IsNew ? FormViewMode.Edit : FormViewMode.ReadOnly;
				ApplyAuthorizationRules();
			}
		}

		#region Metodos privados

		private void ApplyAuthorizationRules()
		{
			//itemPedidoButton.Visible = PackTracker.Business.ItemPedido.CanAddObject();
		}

		private void setItemPedido(ItemPedido itemPedido, bool salvar)
		{
			if (salvar)
			{
				itemPedido = itemPedido.Save();
				ViewState["ItemPedido"] = ItemPedido.GetItemPedido(itemPedido.Id);
			}
			else
			{
				ViewState["ItemPedido"] = itemPedido;
			}
		}

		protected ItemPedido getItemPedido()
		{
			int itemPedidoId = 0;
			ItemPedido itemPedido = ViewState["ItemPedido"] as ItemPedido;

			if (itemPedido == null)
			{
				if (!String.IsNullOrEmpty(Request.QueryString["ItemPedidoId"]))
					int.TryParse(Request.QueryString["ItemPedidoId"].ToString(), out itemPedidoId);

				itemPedido = (itemPedidoId == 0) ? ItemPedido.NewItemPedido() : ItemPedido.GetItemPedido(itemPedidoId);
				ViewState.Add("ItemPedido", itemPedido);
			}
			return itemPedido;
		}

		#endregion

		#region ItemPedidoForm

		protected void itemPedidoForm_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
		{
			ItemPedido itemPedido = getItemPedido();
			Csla.Data.DataMapper.Map(e.NewValues, itemPedido, "Id");
			setItemPedido(itemPedido, true);
			
			itemPedidoForm.DefaultMode = FormViewMode.ReadOnly;
            itemPedidoForm.DataBind();
		}
		
        protected void itemPedidoForm_ItemCommand(object sender, FormViewCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "Cancel":
                    itemPedidoForm.DefaultMode = FormViewMode.ReadOnly;
                    itemPedidoForm.DataBind();
                    break;
                case "Edit":
                    itemPedidoForm.DefaultMode = FormViewMode.Edit;
                    ApplyAuthorizationRules();
                    break;
            }
        }
        
        protected void itemPedidoForm_ItemDeleting(object sender, FormViewDeleteEventArgs e)
        {
            ItemPedido.DeleteItemPedido(getItemPedido().Id);
        }
		
		#endregion
		
		#region DataSources

		protected void itemPedidoDataSource_SelectObject(object sender, Csla.Web.SelectObjectArgs e)
		{
			e.BusinessObject = getItemPedido();
		}

		protected void idPedidoListDataSource_SelectObject(object sender, Csla.Web.SelectObjectArgs e)
		{
			e.BusinessObject = PedidoCollection.GetPedidoCollection();
		}

		protected void idProdutoListDataSource_SelectObject(object sender, Csla.Web.SelectObjectArgs e)
		{
			e.BusinessObject = ProdutoCollection.GetProdutoCollection();
		}

		#endregion
		
    }
}
